package main

/*Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后，每次向服务器发送请求时都会同时将该信息发送给服务器，
服务器收到请求后，就可以根据该信息处理请求
Cookie由服务器创建，并发送给浏览器，最终由浏览器保存

// 设置Cookie
c.SetCookie("xxx","yyy")
// 获取Cookie
c.Cookie("xxx")   // "yyy"
*/
import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func indexl(c *gin.Context) {

	isLogin, _ := c.Cookie("isLogin")

	if isLogin == "true" {
		user, _ := c.Cookie("username")
		c.HTML(http.StatusOK, "index.html", gin.H{
			"username": user,
		})
	} else {
		c.Redirect(302, "/login")
	}
}

func loginl(c *gin.Context) {
	if c.Request.Method == "GET" {
		c.HTML(http.StatusOK, "login.html", nil)
	} else {
		user := c.PostForm("user")
		pwd := c.PostForm("pwd")
		if user == "yuan" && pwd == "123" {
			//name string cookie的名字
			//value string cookie的值
			// maxAge int 有效时间，单位 s，MaxAge=0 忽略MaxAge属性，<0相当于删除cookie，通常设置为-1，>0 表示多少秒后失效
			// path string cookie所在目录，所在路径
			// domain string  域名，作用域
			// secure bool =true只能通过https访问
			// httponly bool  =true不允许别人通过js获取自己的cookie
			c.SetCookie("isLogin", "true", 2000000, "/", "127.0.0.1", false, true)
			c.SetCookie("username", user, 20000000, "/", "127.0.0.1", false, true)
			//c.Redirect(302, "/index")
			c.Redirect(302, "/index")
		} else {
			c.Redirect(302, "/login")
		}
	}
}

func main() {
	r := gin.Default()
	// 返回一个html页面
	r.LoadHTMLGlob("templates/*")
	r.Any("/login", loginl)
	r.GET("/index", indexl)
	r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}
